SpringBoot自动配置原理简单分析

您所在的位置:网站首页 spring bootcsdn SpringBoot自动配置原理简单分析

SpringBoot自动配置原理简单分析

2023-06-25 20:36| 来源: 网络整理| 查看: 265

说明:在SpringBoot项目中,我们添加了许许多多的注解,这些注解提高了开发效率。这是因为SpringBoot在项目启动时,帮我们自动装配了大量的Bean对象,可以通过分析源码查看自动装配的大致原理。

第一步:@SpringBootApplication

进入到启动类中的@SpringBootApplication注解中,该注解里面有七个注解,上面四个是元注解,无需理会,下面三个注解分别表示:

@SpringBootConfiguration:该注解内包含@Configuration注解,表明该类是一个配置类;

@EnableAutoConfiguration:自动装配注解;

@ComponentScan():组件扫描注解,项目启动时,会扫码启动类平级的类和子包中的类;

在这里插入图片描述

可以看出,这三个注解中@EnableAutoConfiguration是核心,进一步分析

第二步:@EnableAutoConfiguration

该注解内,使用@Import()导入了一个自动装配选择器类(AutoConfigurationImportSelector),点开这个类分析

在这里插入图片描述

第三步:AutoConfigurationImportSelector.class

进入到这个类中,可以找到一个自动装配配置的具体实现方法(getCandidateConfigurations()),进入该方法内分析

在这里插入图片描述

第四步:getCandidateConfigurations()

该方法下面有一段提示,表示该方法的内容来自于这两个文件中的其中一个,并且该方法返回值类型是字符串类型的集合 在这里插入图片描述

第五步:在依赖管理中找到对应的文件

找到对应上面方法中提示的对应文件,可以知道该文件内存的是各种Bean对象的全限定类名

在这里插入图片描述

(所有Bean对象的全限定类名)

在这里插入图片描述

总结

SpringBoot自动配置原理大致如下:@SpringBootApplication注解中的,@EnableAutoConfiguration注解中的@Import注解,会自动装配AutoConfigurationImportSelector类,而该类中会执行一个getCandidateConfigurations()方法,该方法会读取SpringBoot文件中的一个文件(在Spring2.7.5 以前是spring.factories),该文件内存放着大量的Bean对象的全限定类名。在项目启动时,会有选择性的自动装配这些对象到IOC容器中。

之所以说有选择,是因为在源码中,还有一系列的选择注解,只有符合条件的对象才会被自动装配,例如以下三个:

@ConditionalOnClass:判断环境中有对应字节码文件,才注册bean到IOC容器

@ConditionalOnMissingBean:判断环境中没有对应的bean(类型或名称),才注册bean到IOC容器

@ConditionalOnProperty:判断配置文件中有对应属性和值,才注册bean到IOC容器

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3